<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: ArJoyHandler Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classArJoyHandler.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classArJoyHandler-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ArJoyHandler Class Reference<div class="ingroups"><a class="el" href="group__OptionalClasses.html">Optional Classes</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Interfaces to a computer joystick.  
 <a href="classArJoyHandler.html#details">More...</a></p>

<p><code>#include &lt;ArJoyHandler.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a2d63b5a62a66bf9dd0c7664d9e9a5f54"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a2d63b5a62a66bf9dd0c7664d9e9a5f54">ArJoyHandler</a> (bool useOSCal=true, bool useOldJoystick=false)</td></tr>
<tr class="memdesc:a2d63b5a62a66bf9dd0c7664d9e9a5f54"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a2d63b5a62a66bf9dd0c7664d9e9a5f54">More...</a><br /></td></tr>
<tr class="separator:a2d63b5a62a66bf9dd0c7664d9e9a5f54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad97d96dcbbf7fdb02691cb6e87f4ad23"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#ad97d96dcbbf7fdb02691cb6e87f4ad23">endCal</a> (void)</td></tr>
<tr class="memdesc:ad97d96dcbbf7fdb02691cb6e87f4ad23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ends the calibration process.  <a href="#ad97d96dcbbf7fdb02691cb6e87f4ad23">More...</a><br /></td></tr>
<tr class="separator:ad97d96dcbbf7fdb02691cb6e87f4ad23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf7e26a06019c33105bdd56bdc495694"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#acf7e26a06019c33105bdd56bdc495694">getAdjusted</a> (int *x, int *y, int *z=NULL)</td></tr>
<tr class="memdesc:acf7e26a06019c33105bdd56bdc495694"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the adjusted reading, as integers, based on the setSpeed.  <a href="#acf7e26a06019c33105bdd56bdc495694">More...</a><br /></td></tr>
<tr class="separator:acf7e26a06019c33105bdd56bdc495694"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36402c7f321a4a2b41a68f6b97e7ed4d"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a36402c7f321a4a2b41a68f6b97e7ed4d">getAxis</a> (unsigned int axis)</td></tr>
<tr class="memdesc:a36402c7f321a4a2b41a68f6b97e7ed4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the floating (-1 to 1) location of the given joystick axis.  <a href="#a36402c7f321a4a2b41a68f6b97e7ed4d">More...</a><br /></td></tr>
<tr class="separator:a36402c7f321a4a2b41a68f6b97e7ed4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a519a90b2000a98c4370fef196d9df064"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a519a90b2000a98c4370fef196d9df064">getButton</a> (unsigned int button)</td></tr>
<tr class="memdesc:a519a90b2000a98c4370fef196d9df064"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the button.  <a href="#a519a90b2000a98c4370fef196d9df064">More...</a><br /></td></tr>
<tr class="separator:a519a90b2000a98c4370fef196d9df064"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada6b0192aa636e9adc1bdf9b8ed2943d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#ada6b0192aa636e9adc1bdf9b8ed2943d">getDoubles</a> (double *x, double *y, double *z=NULL)</td></tr>
<tr class="memdesc:ada6b0192aa636e9adc1bdf9b8ed2943d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the adjusted reading, as floats, between -1.0 and 1.0.  <a href="#ada6b0192aa636e9adc1bdf9b8ed2943d">More...</a><br /></td></tr>
<tr class="separator:ada6b0192aa636e9adc1bdf9b8ed2943d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdb7f941c16c67a3c7093518c3b3d2ac"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#afdb7f941c16c67a3c7093518c3b3d2ac">getNumAxes</a> (void)</td></tr>
<tr class="memdesc:afdb7f941c16c67a3c7093518c3b3d2ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the number of axes the joystick has.  <a href="#afdb7f941c16c67a3c7093518c3b3d2ac">More...</a><br /></td></tr>
<tr class="separator:afdb7f941c16c67a3c7093518c3b3d2ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba9ebe065a068e301283d0b96172f78f"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#aba9ebe065a068e301283d0b96172f78f">getNumButtons</a> (void)</td></tr>
<tr class="memdesc:aba9ebe065a068e301283d0b96172f78f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the number of buttons the joystick has.  <a href="#aba9ebe065a068e301283d0b96172f78f">More...</a><br /></td></tr>
<tr class="separator:aba9ebe065a068e301283d0b96172f78f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a151f172e41db03faccba7cffec7c6c55"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a151f172e41db03faccba7cffec7c6c55">getSpeeds</a> (int *x, int *y, int *z)</td></tr>
<tr class="memdesc:a151f172e41db03faccba7cffec7c6c55"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the maximums for each axis.  <a href="#a151f172e41db03faccba7cffec7c6c55">More...</a><br /></td></tr>
<tr class="separator:a151f172e41db03faccba7cffec7c6c55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32d375849c2048d0e69d89ead5d22ef0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32d375849c2048d0e69d89ead5d22ef0"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a32d375849c2048d0e69d89ead5d22ef0">getStats</a> (int *maxX, int *minX, int *maxY, int *minY, int *cenX, int *cenY)</td></tr>
<tr class="memdesc:a32d375849c2048d0e69d89ead5d22ef0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the stats for the joystick, useful after calibrating to save values. <br /></td></tr>
<tr class="separator:a32d375849c2048d0e69d89ead5d22ef0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d99299d705938712d5443aff2cdc0d9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a5d99299d705938712d5443aff2cdc0d9">getUnfiltered</a> (int *x, int *y, int *z=NULL)</td></tr>
<tr class="memdesc:a5d99299d705938712d5443aff2cdc0d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the unfilitered reading, mostly for internal use, maybe useful for Calibration.  <a href="#a5d99299d705938712d5443aff2cdc0d9">More...</a><br /></td></tr>
<tr class="separator:a5d99299d705938712d5443aff2cdc0d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8057d05613ec0acf0ed8279c2d91f883"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a8057d05613ec0acf0ed8279c2d91f883">getUseOSCal</a> (void)</td></tr>
<tr class="memdesc:a8057d05613ec0acf0ed8279c2d91f883"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets whether to just use OS calibration or not.  <a href="#a8057d05613ec0acf0ed8279c2d91f883">More...</a><br /></td></tr>
<tr class="separator:a8057d05613ec0acf0ed8279c2d91f883"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03a02f2ff48626658e8323436a324814"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03a02f2ff48626658e8323436a324814"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a03a02f2ff48626658e8323436a324814">haveJoystick</a> (void)</td></tr>
<tr class="memdesc:a03a02f2ff48626658e8323436a324814"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns if the joystick was successfully initialized or not. <br /></td></tr>
<tr class="separator:a03a02f2ff48626658e8323436a324814"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdc7f3ebb1734383972de0e7f6f229ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acdc7f3ebb1734383972de0e7f6f229ce"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#acdc7f3ebb1734383972de0e7f6f229ce">haveZAxis</a> (void)</td></tr>
<tr class="memdesc:acdc7f3ebb1734383972de0e7f6f229ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if we definitely have a Z axis (we don't know in windows unless it moves) <br /></td></tr>
<tr class="separator:acdc7f3ebb1734383972de0e7f6f229ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8631cae9be13ee781577148974fae79a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8631cae9be13ee781577148974fae79a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a8631cae9be13ee781577148974fae79a">init</a> (void)</td></tr>
<tr class="memdesc:a8631cae9be13ee781577148974fae79a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Intializes the joystick, returns true if successful. <br /></td></tr>
<tr class="separator:a8631cae9be13ee781577148974fae79a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a940625d5e5257e280929b0ed3e84c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a940625d5e5257e280929b0ed3e84c4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a6a940625d5e5257e280929b0ed3e84c4">setSpeeds</a> (int x, int y, int z=0)</td></tr>
<tr class="memdesc:a6a940625d5e5257e280929b0ed3e84c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximums for the x, y and optionally, z axes. <br /></td></tr>
<tr class="separator:a6a940625d5e5257e280929b0ed3e84c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b40e67c531b4ec5817fa05cbc92147d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b40e67c531b4ec5817fa05cbc92147d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a3b40e67c531b4ec5817fa05cbc92147d">setStats</a> (int maxX, int minX, int maxY, int minY, int cenX, int cenY)</td></tr>
<tr class="memdesc:a3b40e67c531b4ec5817fa05cbc92147d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the stats for the joystick, useful for restoring calibrated settings. <br /></td></tr>
<tr class="separator:a3b40e67c531b4ec5817fa05cbc92147d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8300efa2a57cebcc590fe360d3264f5d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a8300efa2a57cebcc590fe360d3264f5d">setUseOSCal</a> (bool useOSCal)</td></tr>
<tr class="memdesc:a8300efa2a57cebcc590fe360d3264f5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets whether to just use OS calibration or not.  <a href="#a8300efa2a57cebcc590fe360d3264f5d">More...</a><br /></td></tr>
<tr class="separator:a8300efa2a57cebcc590fe360d3264f5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0793ed53dbe86b9d72d63f7a5fb9aa86"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a0793ed53dbe86b9d72d63f7a5fb9aa86">startCal</a> (void)</td></tr>
<tr class="memdesc:a0793ed53dbe86b9d72d63f7a5fb9aa86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts the calibration process.  <a href="#a0793ed53dbe86b9d72d63f7a5fb9aa86">More...</a><br /></td></tr>
<tr class="separator:a0793ed53dbe86b9d72d63f7a5fb9aa86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c9e2e95015a92b3bd691ff1cb0bad81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c9e2e95015a92b3bd691ff1cb0bad81"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a5c9e2e95015a92b3bd691ff1cb0bad81">~ArJoyHandler</a> ()</td></tr>
<tr class="memdesc:a5c9e2e95015a92b3bd691ff1cb0bad81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a5c9e2e95015a92b3bd691ff1cb0bad81"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a9e32f871e8af5f4fdfafb2f2f1a93464"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e32f871e8af5f4fdfafb2f2f1a93464"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getData</b> (void)</td></tr>
<tr class="separator:a9e32f871e8af5f4fdfafb2f2f1a93464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d05b4b7d1fcac1030d2cd5c2f10b35b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d05b4b7d1fcac1030d2cd5c2f10b35b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArJoyHandler.html#a4d05b4b7d1fcac1030d2cd5c2f10b35b">getNewData</a> (void)</td></tr>
<tr class="memdesc:a4d05b4b7d1fcac1030d2cd5c2f10b35b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles the reading of the data into the bins. <br /></td></tr>
<tr class="separator:a4d05b4b7d1fcac1030d2cd5c2f10b35b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac5d1e44b79f65ceb01ac5091d3c6e5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac5d1e44b79f65ceb01ac5091d3c6e5e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>getOldData</b> (void)</td></tr>
<tr class="separator:aac5d1e44b79f65ceb01ac5091d3c6e5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a1c71a4c718c55fcc5cb03dadf3ab3f57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c71a4c718c55fcc5cb03dadf3ab3f57"></a>
std::map&lt; unsigned int, int &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myAxes</b></td></tr>
<tr class="separator:a1c71a4c718c55fcc5cb03dadf3ab3f57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41e10a8119c32bcc48171378b6582a4b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41e10a8119c32bcc48171378b6582a4b"></a>
std::map&lt; unsigned int, bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myButtons</b></td></tr>
<tr class="separator:a41e10a8119c32bcc48171378b6582a4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82279892b5351c08ca1fa814be6207a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82279892b5351c08ca1fa814be6207a8"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myCenX</b></td></tr>
<tr class="separator:a82279892b5351c08ca1fa814be6207a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84840a5f096a987ad3be7737d89f7d34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84840a5f096a987ad3be7737d89f7d34"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myCenY</b></td></tr>
<tr class="separator:a84840a5f096a987ad3be7737d89f7d34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6847d0252f2900957c46407227672312"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6847d0252f2900957c46407227672312"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myFirstData</b></td></tr>
<tr class="separator:a6847d0252f2900957c46407227672312"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a323af4886979f5474aef69daf0c8c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a323af4886979f5474aef69daf0c8c5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myHaveZ</b></td></tr>
<tr class="separator:a2a323af4886979f5474aef69daf0c8c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f303bb029ef2fe722f29fb699946a95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f303bb029ef2fe722f29fb699946a95"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myInitialized</b></td></tr>
<tr class="separator:a5f303bb029ef2fe722f29fb699946a95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d0527c8257ddc282eae1da0ba9d706d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d0527c8257ddc282eae1da0ba9d706d"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myJoyData</b></td></tr>
<tr class="separator:a4d0527c8257ddc282eae1da0ba9d706d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1201427d41b52b9bd6d9fa38c3095de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1201427d41b52b9bd6d9fa38c3095de"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myJoyDesc</b></td></tr>
<tr class="separator:af1201427d41b52b9bd6d9fa38c3095de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a574f9aa6297ff655f30be2022b96c36d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a574f9aa6297ff655f30be2022b96c36d"></a>
char&#160;</td><td class="memItemRight" valign="bottom"><b>myJoyNameTemp</b> [512]</td></tr>
<tr class="separator:a574f9aa6297ff655f30be2022b96c36d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46a7f7fb49a3bc6de5e67755f4add531"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46a7f7fb49a3bc6de5e67755f4add531"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myJoyNumber</b></td></tr>
<tr class="separator:a46a7f7fb49a3bc6de5e67755f4add531"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec019ad84a0f1956a7e9dadc6534dc1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec019ad84a0f1956a7e9dadc6534dc1d"></a>
<a class="el" href="classArTime.html">ArTime</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myLastDataGathered</b></td></tr>
<tr class="separator:aec019ad84a0f1956a7e9dadc6534dc1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c24a7ae03ec5ff4977710e5ef660001"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c24a7ae03ec5ff4977710e5ef660001"></a>
<a class="el" href="classArTime.html">ArTime</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myLastOpenTry</b></td></tr>
<tr class="separator:a5c24a7ae03ec5ff4977710e5ef660001"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a200bb7e14b131e34a3d42a2c170e83bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a200bb7e14b131e34a3d42a2c170e83bc"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myMaxX</b></td></tr>
<tr class="separator:a200bb7e14b131e34a3d42a2c170e83bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e04e0b67ed8741000a027615765ee8d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e04e0b67ed8741000a027615765ee8d"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myMaxY</b></td></tr>
<tr class="separator:a0e04e0b67ed8741000a027615765ee8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a327f366d98951e4a812ac469164c41fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a327f366d98951e4a812ac469164c41fa"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myMinX</b></td></tr>
<tr class="separator:a327f366d98951e4a812ac469164c41fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbcfcb5fcfbfd22200b39b09c714a623"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbcfcb5fcfbfd22200b39b09c714a623"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myMinY</b></td></tr>
<tr class="separator:acbcfcb5fcfbfd22200b39b09c714a623"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadcfc1987d931d93aee0cd145df3242c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aadcfc1987d931d93aee0cd145df3242c"></a>
FILE *&#160;</td><td class="memItemRight" valign="bottom"><b>myOldJoyDesc</b></td></tr>
<tr class="separator:aadcfc1987d931d93aee0cd145df3242c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afda1df4b5d0d4926cfdeaaadae5b0aa7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afda1df4b5d0d4926cfdeaaadae5b0aa7"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myPhysMax</b></td></tr>
<tr class="separator:afda1df4b5d0d4926cfdeaaadae5b0aa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affd3b36bbb69e37f0b2da01417864a53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affd3b36bbb69e37f0b2da01417864a53"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myTopX</b></td></tr>
<tr class="separator:affd3b36bbb69e37f0b2da01417864a53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a946c54011971cab996223c5ffad51044"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a946c54011971cab996223c5ffad51044"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myTopY</b></td></tr>
<tr class="separator:a946c54011971cab996223c5ffad51044"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06221bd2048f3f8f1dac7243b7331650"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06221bd2048f3f8f1dac7243b7331650"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myTopZ</b></td></tr>
<tr class="separator:a06221bd2048f3f8f1dac7243b7331650"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d6762699eca927248a29a202123854"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76d6762699eca927248a29a202123854"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myUseOld</b></td></tr>
<tr class="separator:a76d6762699eca927248a29a202123854"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6135cac3531da616715bf1127d6c137d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6135cac3531da616715bf1127d6c137d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myUseOSCal</b></td></tr>
<tr class="separator:a6135cac3531da616715bf1127d6c137d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Interfaces to a computer joystick. </p>
<p>This class is used to read data from a joystick device attached to the computer (usually via USB). The joystick handler keeps track of the minimum and maximums for both axes, updating them to constantly be better calibrated. The speeds set with setSpeed() influence what is returned by <a class="el" href="classArJoyHandler.html#acf7e26a06019c33105bdd56bdc495694" title="Gets the adjusted reading, as integers, based on the setSpeed. ">getAdjusted()</a> or <a class="el" href="classArJoyHandler.html#ada6b0192aa636e9adc1bdf9b8ed2943d" title="Gets the adjusted reading, as floats, between -1.0 and 1.0. ">getDoubles()</a>.</p>
<p>The joystick device is not opened until <a class="el" href="classArJoyHandler.html#a8631cae9be13ee781577148974fae79a" title="Intializes the joystick, returns true if successful. ">init()</a> is called. If there was an error connecting to the joystick device, it will return false, and <a class="el" href="classArJoyHandler.html#a03a02f2ff48626658e8323436a324814" title="Returns if the joystick was successfully initialized or not. ">haveJoystick()</a> will return false. After calling <a class="el" href="classArJoyHandler.html#a8631cae9be13ee781577148974fae79a" title="Intializes the joystick, returns true if successful. ">init()</a>, use <a class="el" href="classArJoyHandler.html#acf7e26a06019c33105bdd56bdc495694" title="Gets the adjusted reading, as integers, based on the setSpeed. ">getAdjusted()</a> or <a class="el" href="classArJoyHandler.html#ada6b0192aa636e9adc1bdf9b8ed2943d" title="Gets the adjusted reading, as floats, between -1.0 and 1.0. ">getDoubles()</a> to get values, and <a class="el" href="classArJoyHandler.html#a519a90b2000a98c4370fef196d9df064" title="Gets the button. ">getButton()</a> to check whether a button is pressed. setSpeed() may be called at any time to configure or reconfigure the range of the values returned by <a class="el" href="classArJoyHandler.html#acf7e26a06019c33105bdd56bdc495694" title="Gets the adjusted reading, as integers, based on the setSpeed. ">getAdjusted()</a> and <a class="el" href="classArJoyHandler.html#ada6b0192aa636e9adc1bdf9b8ed2943d" title="Gets the adjusted reading, as floats, between -1.0 and 1.0. ">getDoubles()</a>.</p>
<p>To get the raw data instead, use <a class="el" href="classArJoyHandler.html#a5d99299d705938712d5443aff2cdc0d9" title="Gets the unfilitered reading, mostly for internal use, maybe useful for Calibration. ">getUnfiltered()</a> or <a class="el" href="classArJoyHandler.html#a36402c7f321a4a2b41a68f6b97e7ed4d" title="Gets the floating (-1 to 1) location of the given joystick axis. ">getAxis()</a>.</p>
<p>For example, if you want the X axis output to range from -1000 to 1000, and the Y axis output to range from -100 to 100, call <code>setSpeed(1000, 100);</code>.</p>
<p>The X joystick axis is usually the left-right axis, and Y is forward-back. If a joystick has a Z axis, it is usually a "throttle" slider or dial on the joystick. The usual way to drive a robot with a joystick is to use the X joystick axis for rotational velocity, and Y for translational velocity (note the robot coordinate system, this is its local X axis), and use the Z axis to adjust the robot's maximum driving speed. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="gpsRobotTaskExample_8cpp-example.html#_a2">gpsRobotTaskExample.cpp</a>, and <a class="el" href="joydriveActionExample_8cpp-example.html#_a3">joydriveActionExample.cpp</a>.</dd>
</dl></div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a2d63b5a62a66bf9dd0c7664d9e9a5f54"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ArJoyHandler::ArJoyHandler </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>useOSCal</em> = <code>true</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>useOld</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">useOSCal</td><td>if this is set then the joystick will just rely on the OS to calibrate, otherwise it will keep track of center min and max and use those values for calibration</td></tr>
    <tr><td class="paramname">useOld</td><td>use the old linux interface to the joystick </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ad97d96dcbbf7fdb02691cb6e87f4ad23"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArJoyHandler::endCal </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ends the calibration process. </p>
<p>Ends the calibration, which also sets the center to where the joystick is when the function is called...</p>
<p>the center is never reset except in this function, whereas the min and maxes are constantly checked </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="classArJoyHandler.html#a0793ed53dbe86b9d72d63f7a5fb9aa86" title="Starts the calibration process. ">startCal</a> </dd></dl>

</div>
</div>
<a class="anchor" id="acf7e26a06019c33105bdd56bdc495694"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArJoyHandler::getAdjusted </td>
          <td>(</td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>z</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the adjusted reading, as integers, based on the setSpeed. </p>
<p>if useOSCal is true then this returns the readings as calibrated from the OS.</p>
<p>If useOSCal is false this finds the percentage of the distance between center and max (or min) then takes this percentage and multiplies it by the speeds given the class, and returns the values computed from this.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>pointer to an integer in which to store the x value, which will be within the range [-1 * x given in <a class="el" href="classArJoyHandler.html#a6a940625d5e5257e280929b0ed3e84c4" title="Sets the maximums for the x, y and optionally, z axes. ">setSpeeds()</a>, x given in <a class="el" href="classArJoyHandler.html#a6a940625d5e5257e280929b0ed3e84c4" title="Sets the maximums for the x, y and optionally, z axes. ">setSpeeds()</a>] </td></tr>
    <tr><td class="paramname">y</td><td>pointer to an integer in which to store the y value, which will be within the range [-1 * y given in <a class="el" href="classArJoyHandler.html#a6a940625d5e5257e280929b0ed3e84c4" title="Sets the maximums for the x, y and optionally, z axes. ">setSpeeds()</a>, y given in <a class="el" href="classArJoyHandler.html#a6a940625d5e5257e280929b0ed3e84c4" title="Sets the maximums for the x, y and optionally, z axes. ">setSpeeds()</a>] </td></tr>
    <tr><td class="paramname">z</td><td>pointer to an integer in which to store the z value, which will be within the range [-1 * z given in <a class="el" href="classArJoyHandler.html#a6a940625d5e5257e280929b0ed3e84c4" title="Sets the maximums for the x, y and optionally, z axes. ">setSpeeds()</a>, z given in <a class="el" href="classArJoyHandler.html#a6a940625d5e5257e280929b0ed3e84c4" title="Sets the maximums for the x, y and optionally, z axes. ">setSpeeds()</a>] </td></tr>
  </table>
  </dd>
</dl>
<p><b>Java Wrapper Library:</b> Use the version of this method returning ArJoyVec3i </p>
<p><b>Python Wrapper Library:</b> returns a tuple of (x, y, z) instead </p>

</div>
</div>
<a class="anchor" id="a36402c7f321a4a2b41a68f6b97e7ed4d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double ArJoyHandler::getAxis </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>axis</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the floating (-1 to 1) location of the given joystick axis. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">axis</td><td>axis to get, should range from 1 through <a class="el" href="classArJoyHandler.html#afdb7f941c16c67a3c7093518c3b3d2ac" title="Gets the number of axes the joystick has. ">getNumAxes()</a> </td></tr>
  </table>
  </dd>
</dl>
<p>now make sure its in there if (myAxes.find(axis) == myAxes.end()) return 0; return myAxes[axis]/128.0;</p>

</div>
</div>
<a class="anchor" id="a519a90b2000a98c4370fef196d9df064"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArJoyHandler::getButton </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>button</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the button. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">button</td><td>button to test for pressed, within the range 1 through <a class="el" href="classArJoyHandler.html#aba9ebe065a068e301283d0b96172f78f" title="Gets the number of buttons the joystick has. ">getNumButtons()</a></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the button is pressed, false otherwise </dd></dl>

</div>
</div>
<a class="anchor" id="ada6b0192aa636e9adc1bdf9b8ed2943d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArJoyHandler::getDoubles </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>z</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the adjusted reading, as floats, between -1.0 and 1.0. </p>
<p>If useOSCal is true then this gets normalized values (between -1.0 and 1.0) as calibrated by the OS.</p>
<p>In other words, the range [-1.0,1.0] is scaled to the calibrated range determined by the set maximum. If useOSCal is false this finds the percentage of the distance between center and max (or min) then takes this percentage and multiplies it by the speeds given the class, and returns the values computed from this.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>pointer to an integer in which to store the x value. Will be within the range [-1.0, 1.0] </td></tr>
    <tr><td class="paramname">y</td><td>pointer to an integer in which to store the y value. Will be within the range [-1.0, 1.0] </td></tr>
    <tr><td class="paramname">z</td><td>pointer to an integer in which to store the z value. Will be within the range [-1.0, 1.0]</td></tr>
  </table>
  </dd>
</dl>
<p><b>Python Wrapper Library:</b> Returns a tuple of (x, y, z) instead </p>
<p><b>Java Wrapper Library:</b> Use the version of this method returning ArJoyVec3f </p>
<p><b>Python Wrapper Library:</b> Returns a tuple of (x, y, z) instead </p>

</div>
</div>
<a class="anchor" id="afdb7f941c16c67a3c7093518c3b3d2ac"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int ArJoyHandler::getNumAxes </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the number of axes the joystick has. </p>
<dl class="section return"><dt>Returns</dt><dd>the number of axes (axes are indexed as 1 through this number) </dd></dl>

</div>
</div>
<a class="anchor" id="aba9ebe065a068e301283d0b96172f78f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int ArJoyHandler::getNumButtons </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the number of buttons the joystick has. </p>
<dl class="section return"><dt>Returns</dt><dd>the number of buttons (buttons are indexed as 1 through this number) </dd></dl>

</div>
</div>
<a class="anchor" id="a151f172e41db03faccba7cffec7c6c55"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArJoyHandler::getSpeeds </td>
          <td>(</td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the maximums for each axis. </p>
<p><b>Java and Python Wrappers:</b> Use the version of this method returning ArJoyVec3i </p>

</div>
</div>
<a class="anchor" id="a5d99299d705938712d5443aff2cdc0d9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArJoyHandler::getUnfiltered </td>
          <td>(</td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>z</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the unfilitered reading, mostly for internal use, maybe useful for Calibration. </p>
<p>This returns the raw value from the joystick...</p>
<p>with X and Y varying between -128 and 128. This data normally shouldn't be used except in calibration since it can give very uncentered or inconsistent readings. For example its not uncommon for a joystick to move 10 to the right but 50 or 100 to the left, so if you aren't adjusting for this you get a robot (or whatever) that goes left really fast, but will hardly go right. Instead you should use <a class="el" href="classArJoyHandler.html#acf7e26a06019c33105bdd56bdc495694" title="Gets the adjusted reading, as integers, based on the setSpeed. ">getAdjusted()</a> exclusively except for calibration, or informational purposes. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>pointer to an integer in which to store x value </td></tr>
    <tr><td class="paramname">y</td><td>pointer to an integer in which to store y value </td></tr>
    <tr><td class="paramname">z</td><td>pointer to an integer in which to store z value </td></tr>
  </table>
  </dd>
</dl>
<p><b>Java Wrapper Library:</b> Use the version of this method returning ArJoyVec3i </p>
<p><b>Python Wrapper Library:</b> Returns a tuple of (x, y, z) instead </p>

</div>
</div>
<a class="anchor" id="a8057d05613ec0acf0ed8279c2d91f883"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ArJoyHandler::getUseOSCal </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets whether to just use OS calibration or not. </p>
<dl class="section return"><dt>Returns</dt><dd>if useOSCal is set then the joystick will just rely on the OS to calibrate, otherwise it will keep track of center min and max and use those values for calibration </dd></dl>

</div>
</div>
<a class="anchor" id="a8300efa2a57cebcc590fe360d3264f5d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArJoyHandler::setUseOSCal </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>useOSCal</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets whether to just use OS calibration or not. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">useOSCal</td><td>if this is set then the joystick will just rely on the OS to calibrate, otherwise it will keep track of center min and max and use those values for calibration </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a0793ed53dbe86b9d72d63f7a5fb9aa86"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArJoyHandler::startCal </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Starts the calibration process. </p>
<p>Starts the calibration, which resets all the min and max variables as well as the center variables.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArJoyHandler.html#ad97d96dcbbf7fdb02691cb6e87f4ad23" title="Ends the calibration process. ">endCal</a> </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>ArJoyHandler.h</li>
<li>ArJoyHandler.cpp</li>
<li>ArJoyHandler_LIN.cpp</li>
<li>ArJoyHandler_WIN.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classArJoyHandler.html">ArJoyHandler</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
